﻿using System.Text;

namespace Gengens.Disk.WebApi.util
{
    public class StringUtils
    {
        public static string Encrypt(string str, string key)
        {
            if (string.IsNullOrWhiteSpace(str))
                throw new ArgumentNullException(nameof(str));
            if (string.IsNullOrWhiteSpace(key))
                throw new ArgumentNullException(nameof(key));

            byte[] strBys = Encoding.UTF8.GetBytes(str);
            byte[] keyBys = Encoding.UTF8.GetBytes(key);

            List<byte> bytes = new List<byte>();

            for (int i = 0; i < strBys.Length; i++)
            {
                byte b1 = strBys[i];
                byte b2 = keyBys[i % keyBys.Length]; 
                byte b = (byte)((b1 + b2) % 256); 
                bytes.Add(b);
            }

            return Convert.ToBase64String(bytes.ToArray());
        }

        public static string Decrypt(string str, string key)
        {
            byte[] bys = Convert.FromBase64String(str);
            byte[] kbys = Encoding.UTF8.GetBytes(key);
            List<byte> bytes = new List<byte>();

            for (int i = 0; i < bys.Length; i++)
            {
                byte b = bys[i];
                byte b2 = kbys[i % kbys.Length];
                byte b1 = (byte)((b - b2 + 256) % 256);
                bytes.Add(b1);
            }

            return Encoding.UTF8.GetString(bytes.ToArray());
        }
    }

 
}
